__send_IPI_shortcut(APIC_DEST_SELF, vector);
}
+static inline void check_IPI_mask(cpumask_t cpumask)
+{
+ /*
+ * Sanity, and necessary. An IPI with no target generates a send accept
+ * error with Pentium and P6 APICs.
+ */
+ ASSERT(cpus_subset(cpumask, cpu_online_map));
+ ASSERT(!cpus_empty(cpumask));
+}
+
/*
* This is only used on smaller machines.
*/
unsigned long cfg;
unsigned long flags;
+ check_IPI_mask(cpumask);
+
local_irq_save(flags);
/*
unsigned long cfg, flags;
unsigned int query_cpu;
+ check_IPI_mask(mask);
+
/*
* Hack. The clustered APIC addressing mode doesn't allow us to send
* to an arbitrary mask, so I do a unicasts to each CPU instead. This
ASSERT(local_irq_is_enabled());
+ if ( nr_cpus == 0 )
+ return 0;
+
data.func = func;
data.info = info;
data.wait = wait;